import 'package:flutter/cupertino.dart';
/**
 *
 * @ProjectName:    fluoss_a_li_plugin
 * @ClassName:      fluoss_util
 * @Description:    dart类作用描述
 * @Author:         孙浩
 * @QQ:             243280864
 * @CreateDate:     2021/2/8 10:19 PM
 */


abstract class FluOssHelper {
  ///初始化oss实例
  ///
  ///@param endPoint oss需要的endPoint或者cname
  ///@param stsServer STS应用服务器地址，例如http://abc.com
  ///@param needLog 是否需要日志
  ///@param netConfig 网络具体参数
  ///
  Future initOss(
      {@required String endPoint,
      String stsServer,
      bool needLog,
      NetConfig netConfig});

  ///根据地址上传文件数据
  ///@param path 文件地址
  Future upLoadFileByPath(String bucketName, String objectName, String path);

  /// 取消任务
  Future cancelTask({String tag, bool cancelAll});

  ///创建自定义oss实例
  ///
  ///@param endPoint oss需要的endPoint或者cname
  ///@param stsServer STS应用服务器地址，例如http://abc.com
  ///@param needLog 是否需要日志
  ///@param netConfig 网络具体参数
  ///[sign] 签名字段
  ///
  Future initCustomOss(
      {@required String endPoint,
      @required String sign,
      String stsServer,
      bool needLog,
      NetConfig netConfig});

  ///自定义oss根据地址上传文件数据
  ///@param path 文件地址
  Future customOssUpLoad(String bucketName, String objectName, String path);

  ///自定义oss根据地址上传文件数据
  ///@param path 文件地址
  Future customCancelTask({String tag, bool cancelAll});

  Future buildCustomOssManager();

}

class NetConfig {
  int connectOutTime;
  int socketOutTime;
  int maxConcurrencyNum;
  int retryNum;
  bool needDns;
  String userAgent;

  ///NetConfig构造方法
  ///
  ///@param connectOutTime 连接超时时间毫秒
  ///@param socketOutTime socket超时时间毫秒
  ///@param maxConcurrencyNum 最大连接数
  ///@param retryNum 重试次数
  ///@param needDns 是否需要使用dns
  ///@param userAgent 自定义user-agent
  ///
  NetConfig(
      {this.connectOutTime = 15 * 1000,
      this.socketOutTime = 15 * 1000,
      this.maxConcurrencyNum = 5,
      this.retryNum = 2,
      this.needDns = false,
      this.userAgent = ""});
}
